const app = getApp()

import { CallNexus } from '../utils/callTel.js'
import { HiddenCall } from '../request/api.js'
const request = new HiddenCall
// 跟进数据组织跳转
import { describeData } from '../utils/method.js'
module.exports = Behavior({
  /**
  *  组件代码共用
  * - @author           狄兆璐
  * - @date             2018-07-02
  * callBtn             显示拨打弹窗
  */
  data: {
    callBtn: false
  },
  methods: {
    /**
      * 表单提交事件，收集formId　
      * @author dzl
      */
    formSubmit: function (e) {
      let modfiyHouseValue = e.detail.value || ''
      this.setData({ modfiyHouseValue })
      // 获取formId
      let formId = e.detail.formId
      // 处理保存推送码
      app.dealFormIds(formId)
      app.saveFormIds()
      // 添加跟进描述提示
      if (e.detail.prompt) {
        this.interchangeable()
      }
      // 添加收藏成功提示
      if (this.data.favoriteList) {
        this.confirm(e.detail.value.input)
      }
      // 修改楼牌号
      this.modfiyHouseNumber(modfiyHouseValue)
    },
    /**
     * 图片上传提交事件，收集formId
     * @author wl
     */
    sumbitForm: function (e) {
      // 获取formId
      let formId = e.detail.formId
      // 调用form提交，传入formId
      this.triggerEvent('formSubmit', {
        formId: e.detail.formId
      })
    },
    /**
     * 房客源显示电话拨打弹框查看手机号
     * @author dzl
     * date 2018-9-12
     * @param {*} msgCallCode 消息列表的房客源编号code
     * @param {*} msgPage 获取消息列表的目录，便于跳转
     * @param {*} msgCallType 获取消息列表的类型出租出售等
     * @param {*} phoneUtype 获取房源还是客源
     */
    phoneList: function (e) {
      // 是否消息列表的code
      if (e.currentTarget.dataset.message) {
        // 消息列表的房客源相关数据
        let msgCallCode = e.currentTarget.dataset.message,
          msgCallType = e.currentTarget.dataset.resourcetype,
          phoneUtype = e.currentTarget.dataset.utype
        this.setData({ msgCallCode, msgPage: 'index', msgCallType, phoneUtype })
      }
      // 消费消息列表消息
      this.readMessage(e.currentTarget.dataset.id)
      // 判断是房源还是客源，拿到消息列表code，获取拨打手机号
      this.featurePhoneList('lookPhone')
    },
    /**
     * 房客源显示电话拨打弹框查看手机号
     * @author wl 
     */
    sendMessage: function (e) {
      // 是否消息列表的code
      if (e.currentTarget.dataset.message) {
        // 获取当前的code和房客类型
        this.setData({
          msgSmsCode: e.currentTarget.dataset.message,
          msgSmsType: e.currentTarget.dataset.utype
        })
      }
      // 消费消息列表消息
      this.readMessage(e.currentTarget.dataset.id)
      // 判断是房源还是客源，拿到消息列表code，获取发送短信手机号
      this.featurePhoneList('messageNum')
    },
    /**
     * 短信发送
     * @author 王磊
     */
    makeMessage(e) {
      // 设置短信详情标志
      let that = this
      let data = {
        callType: "sms",
        sendTel: this.data.message[e.currentTarget.dataset.index]
      }
      // 是否为房客源列表进入
      if (!this.data.model) {
        data.utypeCode = this.data.msgSmsType === 'house' ? 0 : 1
        data['code'] = this.data.msgSmsCode
      } else {
        // 消息列表
        data.utypeCode = this.data.model.houseCode ? 0 : 1
        data['code'] = this.data.model.houseCode ? this.data.model.houseCode : this.data.model.customerCode
      }
      // 跳转带入短信数据
      wx.navigateTo({
        url: `../../pages/mailing_detail/index?model=${JSON.stringify(data)}`,
        success() {
          that.setData({ messageShow: false, messageCallBtn: false })
        }
      })
    },
    /**
    * 关闭拨打电话弹框
    * @author dzl
   */
    clickMask: function () {
      this.setData({ show: false, callBtn: false, listPhone: [], showMessage: [] })
    },
    /**
    * 房客源绑定主叫被叫号码
    * @author dzl
    */
    makePhone: function (e) {
      // 被叫号码
      let called = e.currentTarget.dataset.item
      // 设置拨打关系进入添加跟进页面
      const newCallNexus = new CallNexus(this.data)
      newCallNexus.dataSorting(called, this)
    },
    /**
     * 添加收藏，添加跟进描述通用提示
     * @author wl
     */
    interchangeable() {
      // 打开提示
      this.setData({ prompt: true })
      // 延迟1800毫秒之后关闭提示
      setTimeout(() => {
        this.setData({ prompt: false })
      }, 1800)
    },
    /**
     * 当前列表数据页返回顶部
     * @author wl
     */
    backTop() {
      wx.pageScrollTo({
        scrollTop: 0,
        duration: 500
      })
    },
    /**
     * 修改楼牌号
     * @author wl
     * date 2019-3-27
     * @param {*} modfiyHouseValue 获取修改房源编号的对象
     * @param {*} isModifyHouseNum 关闭修改楼牌号弹窗
     * @param {*} isBorder 隐藏input边框
     */
    modfiyHouseNumber(modfiyHouseValue) {
      for (let i in modfiyHouseValue) {
        if (!modfiyHouseValue[i]) {
          wx.showToast({ title: '请填写内容！', icon: 'none' })
          return
        } else {
          // 修改楼牌号重新赋值
          modfiyHouseValue.houseCode = this.data.model.houseCode
          // 将楼号转换数字赋值
          modfiyHouseValue.houseFloor = parseInt(modfiyHouseValue.houseFloor)
          modfiyHouseValue.houseTopFloor = parseInt(modfiyHouseValue.houseTopFloor)
          request.modifyHouseNumber(modfiyHouseValue).then((res) => {
            if (res.statusCode === 1000) {
              // 关闭弹窗
              this.setData({
                isModifyHouseNum: false,
                isBorder: false
              })
            }
            wx.showToast({ title: res.message, icon: 'none' })
          })
        }
        this.data.modfiyHouseValue[i] = ''
      }
      // 修改内容赋值
      this.setData({ modfiyHouseValue: this.data.modfiyHouseValue })
    },
    /**
     * 消息列表消费单个消息
     * @author wl
     * date 2019-3-28
     */
    readMessage(id) {
      if (id) request.readMessage(id).then(res => { })
    },
    /**
     * 获取短信拨打电话列表
     * @author wl
     * date 2019-3-28
     * @param {*} type 短信or拨打
     */
    featurePhoneList(type) {
      // 判断是房源类型还是客源类型或者消息列表赋予编号code
      let code = this.data.model ? (this.data.model.houseCode ? this.data.model.houseCode : this.data.model.customerCode) : this.data.msgCallCode
      // 拨打or发送短信获取不同的手机号
      type === 'lookPhone' ? this.callList(type, code) : this.smsPhoneList(type, code)
    },
    /**
     * 拨打请求手机号列表
     * @author wl
     * date 2019-3-28
     * @param {*} type 短信or拨打
     */
    callList(type, code) {
      // 根据编号获取相关电话列表
      request[type](code).then((res) => {
        this.setData({ callPhoneList: JSON.parse(JSON.stringify(res)) })
        res.forEach((el, i) => {
          res[i].phone = el.phone.substr(0, 3) + "****" + el.phone.substr(7)
        })
        // 选择虚拟号
        // this.selectVirtualTel(res.result)
        // 赋值电话列表
        this.setData({ listPhone: res })
        // 检验是否填写跟进
        return request.followFinished()
      }).then((res) => {
        if (res.result) {
          // 判断消息列表还是房客源列表，获取房客源目录
          let page = this.data.msgPage ? this.data.msgPage : this.data.model ? (this.data.model.houseCode ? 'house_list' : 'customer_list') : ''
          // 组织数据进入跟进页面填写遗留跟进
          describeData(page, res, true)
        } else {
          this.setData({ show: true, callBtn: true })
        }
      })
    },
    /**
     * 短信请求手机号列表
     * @author wl
     * date 2019-3-28
     * @param {*} type 短信or拨打
     */
    smsPhoneList(type, code) {
      // 获取发短信的手机号
      request[type](code).then((res) => {
        this.setData({
          message: JSON.parse(JSON.stringify(res))
        })
        var arr = res
        // 截取手机号只显示前三位
        arr.forEach((el, i) => {
          arr[i].realNumber = el.realNumber.substr(0, 3) + "****" + el.realNumber.substr(7)
        })
        this.setData({
          showMessage: arr
        })
        // 关闭弹窗以及其他操作弹窗
        this.setData({ messageShow: true, messageCallBtn: true, handle: false, record: false })
      })
    },
    /**
     * 选择虚拟号跳转页面传值
     * @author wl
     * date 2019-3-28
     * @param {*} res 拨打电话列表数据
     * @param {*} msgCallCode 消息列表房客源编号code
     * @param {*} msgPage     消息列表目录用作跳转
     * @param {*} callPhoneList 电话列表，用作用户选择
     * @param {*} msgCallType 获取房源还是客源
     */
    selectVirtualTel(res) {
      let select = {
        res,
        model: this.data.model,
        msgCallCode: this.data.msgCallCode,
        msgPage: this.data.msgPage,
        callPhoneList: this.data.callPhoneList,
        msgCallType: this.data.msgCallType
      }
      wx.navigateTo({
        url: `../../pages/phone_select/index?phoneSelect=${JSON.stringify(select)}`,
      })
    }
  }
})
